如何编译含有多个文件的fortran程序包(Linux多文件编译)

您所在的位置:网站首页 fortran 编译命令 如何编译含有多个文件的fortran程序包(Linux多文件编译)

如何编译含有多个文件的fortran程序包(Linux多文件编译)

2023-08-11 01:47| 来源: 网络整理| 查看: 265

如何编译含有多个文件的fortran程序包(Linux多文件编译)

初学Linux,拿到的程序都是压缩包,解压之后发现各个程序互相嵌套,而且往往不是用同一种语言写的,因此在编译的过程,需要厘清每个文件之间的逻辑关系。

下面就谈一谈我第一次将多文件成功编译的心得吧:

对于有Makefile的程序包

这样的程序包往往关系复杂,但是编译起来却很简单:不需要按照文件的结构依次编译每个文件,只需要在shell中输入make即可全部编译完成。如果非常关心各个程序之间的相互关系,只需要打开Makefile查看即可。

关于Makefile的教程,推荐学习《跟我一起写Makefile》(作者:陈皓)

对于没有Makefile的程序包

这样的程序包通常比较简单,文件数量比较少,但是需要厘清所有程序之间的结构,按照从末端到主干的顺序依次编译。

一般来说,主干程序为main.f95,调用其他程序通常会在文件的开始或函数的开始进行声明,声明的方式有两种:

#This is main.f95 #first declaration: use module_name use comvar #second declaration: use 'module_file_name' include 'comvar.f95' #This is comvar.f95: declare module_name module comvar

然后,根据主干程序所声明的枝干程序,进一步追索,可以连成程序树,例如下图。按照从子程序到主程序、从末端模块(module)到主干函数(subroutine)的顺序进行编译。 某程序包的子程序结构关系图 例如上图在shell中的编译顺序为

>>gfortran -c nrtype.f95 nrutil.f95 newftt.f95 #最末端的三个模块 >>gfortran -c comvar.f95 com_ptam.f95 bessel.f95 #需使用nrtype.o nrutil.o newftt.o >>gfortran -c ptam.f95 #需要使用com_ptam.o nrtype.o >>gfortran -c Gij_.f95 #需要使用com_ptam.o comvar.o bessel.o >>gfortran -c main.f95 #需要使用以上所有.o程序 >>gfortran -o main bessel.o com_ptam.o comvar.o Gij_.o main.o newftt.o nrtype.o nrutil.o ptam.o #编译获得main文件 >>./main #运行main文件

当然gfortran编译顺序是从前向往,因此以上代码可以合并为

>>gfortran -c nrtype.f95 nrutil.f95 newftt.f95 comvar.f95 com_ptam.f95 bessel.f95 ptam.f95 Gij_.f95 main.f95 >>gfortran -o main bessel.o com_ptam.o comvar.o Gij_.o main.o newftt.o nrtype.o nrutil.o ptam.o >>./main

感谢张老师布置的作业和提供的程序,以后人生中应该很难再次体会到第一次编译成功的喜悦了,上面的示例代码是用基函数展开的方法绘制半无限空间格林函数的理论地震图的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3